package com.tzq.elastic.controller.base;


import com.tzq.elastic.util.JsonUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * Titile Controller基类，所有controller类都必须继承该类
 *
 * @author 曾剑锋
 * 说明：本类中主要定义返回结果，返回的结果都为json格式
 */
public class BaseController {

    /**
     * 成功
     *
     * @return code：0 desc：成功
     */
    public static String success() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "0");
        map.put("desc", "成功");
        return JsonUtil.toJsonString(map);
    }

    /**
     * 成功
     *
     * @param desc：重新定义成功后的描述信息
     * @return code：0 desc：重新定义成功后的描述信息
     */
    public static String success(String desc) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "0");
        map.put("desc", desc);
        return JsonUtil.toJsonString(map);
    }

    /**
     * 成功
     *
     * @param obj：数据对象
     * @return
     */
    public static String success(Object obj) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "0");
        map.put("desc", "成功");
        map.put("data", obj);
        return JsonUtil.toJsonString(map);
    }

    /**
     * 成功
     *
     * @param desc：重新定义成功后的描述信息 obj：数据对象
     * @return
     */
    public static String success(String desc, Object obj) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "0");
        map.put("desc", desc);
        map.put("data", obj);
        return JsonUtil.toJsonString(map);
    }

    /**
     * 成功或失败
     *
     * @param b（true：成功，false：失败）
     * @param successMessage：成功消息
     * @param failMessage：失败消息
     * @return
     */
    public static String success(boolean b, String successMessage, String failMessage) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (b) {
            map.put("code", "0");
            map.put("desc", successMessage);
        } else {
            map.put("code", "-1");
            map.put("desc", failMessage);
        }
        return JsonUtil.toJsonString(map);
    }

    /**
     * 成功或失败
     *
     * @param b（true：成功，false：失败）
     * @param successMessage：成功消息
     * @param failMessage：失败消息
     * @param obj：成功后返回的数据对象
     * @return
     */
    public static String success(boolean b, String successMessage, String failMessage, Object obj) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (b) {
            map.put("code", "0");
            map.put("desc", successMessage);
            map.put("data", obj);
        } else {
            map.put("code", "-1");
            map.put("desc", failMessage);
        }
        return JsonUtil.toJsonString(map);
    }

    /**
     * 失败/异常
     *
     * @return
     */
    public static String fail() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "-1");
        return JsonUtil.toJsonString(map);
    }

    /**
     * 失败/异常
     *
     * @param desc：失败/异常描述
     * @return
     */
    public static String fail(String desc) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("code", "-1");
        map.put("desc", desc);
        return JsonUtil.toJsonString(map);
    }

}
